package com.sy.service;

import com.sy.dto.AdminInfo;
import com.sy.dto.ClassTabInfo;
import com.sy.dto.Table;
import com.sy.entity.ClassMsg;
import com.sy.entity.Teacher;
import com.sy.vo.AdminInfoVo;

import java.util.List;

public interface AdminService {
    /**
     * 根据管理员id得到管理员信息
     * @param id
     * @return
     */
    AdminInfo getAdminInfo(String id);

    /**
     * 更新管理员信息
     * @param adminInfoVo
     * @return
     */
    boolean updateAdminInfo(AdminInfoVo adminInfoVo);

    /**
     * 根据管理员id修改管理员个人信息
     * @param id
     * @param name
     * @param phone
     * @return
     */
    boolean editAdminInfoById(Integer id, String name, String phone);

    /**
     * 根据管理员id修改管理员密码
     * @param id
     * @param oldPwd
     * @param newPwd
     * @return
     */
    boolean editAdminPwdById(Integer id, String oldPwd, String newPwd, String newPwdAgain);

    /**
     * 根据页码和每页数量获得相应的公告信息列表
     */
    Table getNoticesByPage(Integer pageNum, Integer pageSize);

    /**
     * 根据页码和每页数量以及关键词获得相应的公告信息列表
     */
    Table getNoticesByPageAndKeyWords(Integer pageNum, Integer pageSize, String keyWords);

    /**
     * 添加公告信息
     */
    boolean addNotice(String title, String notice, Integer pushUserId);

    /**
     * 根据公告id数组批量删除公告信息
     */
    boolean delNoticesByIds(Integer[] ids);

    /**
     * 根据公告id删除公告信息
     */
    boolean delNoticeById(Integer id);

    /**
     * 根据公告id修改公告信息
     */
    boolean editNoticeById(Integer id, String title, String notice, Integer pushUserId);

    /**
     * 根据页码和每页数量获得相应的学生信息列表
     */
    Table getStudentsInfoByPage(Integer pageNum, Integer pageSize);

    /**
     * 根据页码和每页数量以及关键字获得相应的学生信息列表
     */
    Table getStudentsInfoByPageAndKeyWords(Integer pageNum, Integer pageSize, String keyWords);

    /**
     * 添加学生信息
     * @param studyno   学号
     * @param password  密码
     * @param name  名字
     * @param genderId  性别序号（1为男，2为女）
     * @param phone 手机号
     * @param classId   班级id
     * @return  添加学生操作是否成功
     */
    boolean addStudentInfo(Integer studyno, String password, String name, Integer genderId, String phone, Integer classId);

    /**
     * 批量删除学生信息
     */
    boolean delStudentsInfoByIds(Integer[] ids);

    /**
     * 删除单条学生信息
     */
    boolean delStudentInfoById(Integer id);

    /**
     * 修改学生信息
     */
    boolean editStudentInfoById(Integer id, Integer studyno, String password, String name, Integer genderId, String phone, Integer classId);

    /**
     * 获得全部的老师信息列表
     */
    List<Teacher> getAllTeachersInfo();

    /**
     * 根据页码和每页数量获得相应的老师信息列表
     */
    Table getTeachersInfoByPage(Integer pageNum, Integer pageSize);

    /**
     * 根据页码和每页数量获得相应的老师信息列表
     */
    Table getTeachersInfoByPageAndKeyWords(Integer pageNum, Integer pageSize, String keyWords);

    /**
     * 添加学生信息
     * @param workno   学号
     * @param password  密码
     * @param name  名字
     * @param genderId  性别序号（1为男，2为女）
     * @param phone 手机号
     * @return  添加学生操作是否成功
     */
    boolean addTeacherInfo(Integer workno, String password, String name, Integer genderId, String phone);


    /**
     * 批量删除老师信息
     */
    boolean delTeachersInfoByIds(Integer[] ids);

    /**
     * 删除单条老师信息
     */
    boolean delTeacherInfoById(Integer id);




    /**
     *  修改老师信息
     * @param id
     * @param workno
     * @param password
     * @param name
     * @param genderId
     * @param phone
     * @return
     */
    boolean editTeacherInfoById(Integer id, Integer workno, String password, String name, Integer genderId, String phone);

    /**
     * 得到所有班级信息
     */
    List<ClassTabInfo> getAllClassMsg();

    /**
     * 根据页码和每页数量获得相应的班级信息列表
     */
    Table getClassesInfoByPage(Integer pageNum, Integer pageSize);

    /**
     * 根据页码和每页数量以及关键字获得相应的班级信息列表
     */
    Table getClassesInfoByPageAndKeyWords(Integer pageNum, Integer pageSize, String keyWords);

    boolean addClassInfo(String className, Integer teacherId);

    boolean editClassInfoById(Integer id, String className, Integer teacherId);
}
